Quero excluir um ramo local e remotamente. Tentativas falhadas de excluir uma filial remota $ git branch -d remotes / origin / bugfix erro: branch 'remotes / origin / bugfix' não encontrado. $ git branch -d origin / bugfix erro: branch 'origin / bugfix' não encontrado. $ git branch -rd origin / bugfix Remoção de origem / correção de bug do branch remoto (era 2a14ef7). $ git push Tudo em dia $ git pull De github.com:gituser/gitproject * [novo ramo] correção de bug -> origem / correção de bug Já atualizado. O que devo fazer de diferente para excluir com êxito o branch remotes / origin / bugfix tanto local quanto remotamente?
2020-12-07 13:12:42
1 2 Próximo Sumário executivo $ git push -d$ git branch -d Observe que, na maioria dos casos, o nome remoto é a origem. Nesse caso, você terá que usar o comando dessa forma. $ git push -d origin Excluir filial local Para excluir a filial local, use um dos seguintes: $ git branch -d branch_name $ git branch -D branch_name Nota: A opção -d é um apelido para --delete, que apenas exclui o branch se ele já tiver sido totalmente mesclado em seu branch upstream. Você também pode usar -D, que é um apelido para --delete --force, que exclui o branch "independente de seu status mesclado." [Fonte: man git-branch] Observe também que git branch -d branch_name irá falhar se você estiver no ramo que você deseja remover. A mensagem começa com erro: Não é possível excluir o branch 'branch_name'. Se sim, primeiro troque para algum outro branch, por exemplo: git checkout master. Excluir filial remota [atualizado em 8 de setembro de 2017] A partir do Git v1.7.0, você pode excluir um branch remoto usando $ git push --delete que pode ser mais fácil de lembrar do que $ git push : que foi adicionado no Git v1.5.0 "para excluir um branch remoto ou uma tag." A partir do Git v2.8.0, você também pode usar git push com a opção -d como um apelido para --delete. Portanto, a versão do Git que você instalou determinará se você precisa usar a sintaxe mais fácil ou mais difícil. Excluir filial remota [resposta original de 5 de janeiro de 2010] Do Capítulo 3 do Pro Git por Scott Chacon: Excluindo Ramificações Remotas Suponha que você tenha terminado com um branch remoto - digamos, você e seus colaboradores terminaram com um recurso e o fundiram em seu branch master remoto (ou qualquer branch em que sua linha de código estável esteja). Você pode deletar um branch remoto usando a sintaxe obtusa git push [remotename]: [branch]. Se você deseja excluir o branch de correção do servidor do servidor, execute o seguinte: $ git push origin: serverfix Para git@github.com: schacon / simplegit.git - [excluído] serverfix Estrondo. Não há mais ramificações em seu servidor. Você pode querer dobrar esta página, porque você precisará desse comando e provavelmente esquecerá a sintaxe. Uma maneira de lembrar esse comando é relembrando a sintaxe git push [remotename] [localbranch]: [remotebranch] que examinamos um pouco antes. Se você deixar de fora a parte [ramo local], basicamente estará dizendo: “Não tome nada do meu lado e faça com que seja [ramo remoto]. Eu emiti git push origin: bugfix e funcionou perfeitamente. Scott Chacon estava certo - vou querer dar ouvidos a essa página (ou virtualmente fazer ouvidos ao responder isso no Stack Overflow). Então você deve executar isso em outras máquinas # Obter alterações de todos os controles remotos e excluir localmente # ramos / tags excluídos remotos etc. # --prune fará o trabalho: -; git fetch --all --prune para propagar as mudanças. | A resposta de Matthew é ótima para remover branches remotos e também agradeço a explicação, mas para fazer uma distinção simples entre os dois comandos: Para remover uma filial local de sua máquina: git branch -d {the_local_branch} (use -D em vez de forçar a exclusão do branch sem verificar o status da fusão) Para remover uma filial remota do servidor: git push origin --delete {the_remote_branch} Referência: Git: Excluir um branch (local ou remoto) | As respostas curtas Se você quiser explicações mais detalhadas sobre os comandos a seguir, consulte as respostas longas na próxima seção. Excluindo uma filial remota git push origin --delete # Git versão 1.7.0 ou mais recente git push origin -d # Versão mais curta (Git 1.7.0 ou mais recente) git push origin: # versões do Git anteriores a 1.7.0 Excluindo uma filial local branch git --delete git branch -d # versão mais curta git branch -D # Forçar exclusão de branches não mesclados Excluindo uma filial de rastreamento remoto local git branch --delete --remotes / git branch -dr / # Shorter git fetch --prune # Excluir vários ramos obsoletos de rastreamento remoto git fetch -p # Shorter A resposta longa: existem três ramos diferentes para excluir! Quando você estiver lidando com a exclusão de branches local e remotamente, lembre-se de que existem três branches envolvidos: A filial local X. O ramo de origem remota X. A ramificação de rastreamento remoto local origin / X que rastreia a ramificação remota X. O pôster original usou: git branch -rd origin / bugfix Que apenas excluiu sua origem / correção de bug do branch de rastreamento remoto local, e não a correção de bug do branch remoto real na origem. Para excluir esse ramo remoto real, você precisa git push origin --delete bugfix Detalhes adicionais As seções a seguir descrevem detalhes adicionais a serem considerados ao excluir suas ramificações remotas e de rastreamento remoto. Empurrar para excluir ramos remotos também remove ramos de rastreamento remoto Observe que deletar o branch remoto X da linha de comandousar um git push também removerá o branch de rastreamento remoto local origin / X, então não é necessário podar o branch de rastreamento remoto obsoleto com git fetch --prune ou git fetch -p. No entanto, não faria mal se você fizesse isso de qualquer maneira. Você pode verificar se a origem / X do ramo de rastreamento remoto também foi excluída executando o seguinte: # Visualize apenas ramos de rastreamento remoto git branch --remotes git branch -r # Visualize ramos estritamente locais e de rastreamento remoto git branch --all git branch -a Removendo a origem obsoleta do ramo de rastreamento remoto local / X Se você não excluiu seu branch remoto X da linha de comando (como acima), então seu repositório local ainda conterá (um agora obsoleto) branch de rastreamento remoto origin / X. Isso pode acontecer se você excluiu um branch remoto diretamente por meio da interface da web do GitHub, por exemplo. Uma maneira típica de remover esses branches obsoletos de rastreamento remoto (desde o Git versão 1.6.6) é simplesmente executar git fetch com --prune ou -p mais curto. Observe que isso remove todos os ramos de rastreamento remoto locais obsoletos para quaisquer ramos remotos que não existem mais no remoto: git fetch origin --prune git fetch origin -p # Shorter Aqui está a citação relevante das notas de versão 1.6.6 (ênfase minha): "git fetch" aprendeu --all e --multipleoptions, a executar fetch de muitos repositórios e opção --prune para remover o rastreamento remoto ramos que ficaram velhos. Isso torna "git remote update" e "git poda remota "menos necessária (não há planos para remover" remota atualizar "nem" poda remota ", entretanto). Alternativa à poda automática acima para ramos obsoletos de rastreamento remoto Alternativamente, em vez de podar seus branches locais obsoletos de rastreamento remoto através de git fetch -p, você pode evitar fazer a operação de rede extra apenas removendo manualmente o (s) branch (s) com as opções --remote ou -r: git branch --delete --remotes origin / X git branch -dr origin / X # Shorter Veja também git-branch (1) Página do manual. git-fetch (1) Página de manual. Pro Git § 3.5 Ramificação Git - Ramificações remotas. | Etapas para excluir uma filial: Para excluir a filial remota: git push origin --delete Para excluir a filial local, você tem três maneiras: 1: git branch -D 2: git branch --delete --force # O mesmo que -D 3: git branch --delete # Erro ao desfazer a mesclagem Explique: OK, apenas explique o que está acontecendo aqui! Simplesmente faça git push origin --delete para deletar somente seu branch remoto, adicione o nome do branch no final e isto irá deletar e enviar para remoto ao mesmo tempo ... Além disso, git branch -D, que simplesmente exclui apenas o branch local! ... -D significa --delete --force que irá deletar o branch mesmo que ele não esteja mesclado (force delete), mas você também pode usar -d que significa --delete que lança um erro respectivo do status de fusão do branch ... Também crio a imagem abaixo para mostrar as etapas: | Você também pode usar o seguinte para excluir a filial remota git push --delete origin serverfix Que faz a mesma coisa que git push origin: serverfix mas pode ser mais fácil de lembrar. | Dica: Quando você exclui branches usando git branch -d # Exclui branch local ou git push origin: # Exclui branch remoto apenas as referências são excluídas. Mesmo que o branch seja realmente removido no remoto, as referências a ele ainda existem nos repositórios locais dos membros da sua equipe. Isso significa que, para outros membros da equipe, os branches excluídos ainda são visíveis quando eles fazem um branch git -a. Para resolver isso, os membros da sua equipe podem podar os ramos excluídos com git remote prune Normalmente, essa é a origem do git remote prune. | Se você deseja excluir um branch, primeiro faça check-out no branch que não seja o branch a ser excluído. git checkout other_than_branch_to_be_deleted Excluindo a filial local: git branch -D branch_to_be_deleted Excluindo a filial remota: git push origin --delete branch_to_be_deleted | git branch -D git branch -D -r origin / git push origin: | É simples: basta executar o seguinte comando: Para excluir um branch Git local e remotamente, primeiro exclua o branch local usando este comando: git branch -d example (Aqui, o exemplo é o nome do ramo.) E depois disso, exclua o branch remoto usando este comando: git push origin: exemplo | É muito simples: Para excluir a filial remota git push -d origin Ou git push origin: Para excluir forçosamente a filial local git branch -D | Outra abordagem é: git push --prune origin AVISO: Isso excluirá todas as ramificações remotas que não existem localmente. Ou de forma mais abrangente, git push --mirror irá efetivamente fazer com que o repositório remoto se pareça com a cópia local do repositório (cabeçotes locais, remotos e tags são espelhados no remoto). | Eu uso o seguinte em minhas configurações de Bash: alias git-shoot = "git pushorigin --delete " Então você pode ligar para: nome do ramo git-shoot | Excluir localmente: Para excluir uma filial local, você pode usar: git branch -d Para excluir um branch à força, use -D em vez de -d. git branch -D Excluir remotamente: Existem duas opções: git push origin: branchname git push origin - excluir nome do branch Eu sugiro que você use a segunda maneira, pois é mais intuitiva. | Desde janeiro de 2013, o GitHub incluiu um botão Excluir branch ao lado de cada branch em sua página "Ramificações". Postagem de blog relevante: Criar e excluir branches | Se quiser concluir essas duas etapas com um único comando, você pode criar um alias para ele adicionando o seguinte ao seu ~ / .gitconfig: [alias] rmbranch = "! f () {git branch -d $ {1} && git push origin --delete $ {1};}; f" Como alternativa, você pode adicionar isso à sua configuração global a partir da linha de comando usando git config --global alias.rmbranch \ '! f () {git branch -d $ {1} && git push origin --delete $ {1}; }; f ' NOTA: Se usar -d (d minúsculo), a ramificação só será excluída se tiver sido mesclada. Para forçar a exclusão, você precisará usar -D (D maiúsculo). | Para excluir sua filial local e remotamente Check-out para o branch master - git checkout master Exclua seu branch remoto - git push origin --delete Exclua seu branch local - branch git --delete | Você também pode fazer isso usando git remote prune origin $ git remote prune origin Origem da poda URL: git@example.com/yourrepo.git * [podado] origin / some-branchs Ele remove e exclui branches de rastreamento remoto de uma listagem -r branch git. | Além das outras respostas, costumo usar a ferramenta git_remote_branch. É uma instalação extra, mas fornece uma maneira conveniente de interagir com branches remotos. Neste caso, para excluir: grb delete branch Eu também uso os comandos publicar e rastrear com bastante frequência. | Um comando de uma linha para excluir local e remoto: D = nome do ramo; git branch -D $ D; origem do git push: $ D Ou adicione o alias abaixo ao seu ~ / .gitconfig. Uso: git kill branch-name [alias] kill = "! f () {git branch -D \" $ 1 \ "; git push origin --delete \" $ 1 \ ";}; f" | Excluindo ramos Vamos supor que nosso trabalho no "formulário de contato" do branch está concluído e já o integramos ao "master". Como não precisamos mais dele, podemos excluí-lo (localmente): $ git branch -d contact-form E para excluir o branch remoto: git push origin --delete contact-form | Excluir filial remota git push origin: Excluir filial local git branch -D Excluir etapas da filial local: checkout para outra filial deletar filial local | Basta dizer: git branch -d git push origin: | git push origin --delete é mais fácil de lembrar do que git push origin: branchName | Agora você pode fazer isso com o aplicativo GitHub Desktop. Depois de lançar o aplicativo Clique no projeto que contém o ramo Mude para o branch que você gostaria de excluir No menu "Branch", selecione "Unpublish ..." para que o branch seja excluído dos servidores GitHub. No menu "Branch", selecione 'Excluir "branch_name" ...', para que o branch seja excluído de sua máquina local (também conhecida como a máquina em que você está trabalhando atualmente) | Para excluir localmente - (normal) git branch -d my_branch Se o seu branch está em um processo de rebasing / merge e isso não foi feito corretamente, significa que você receberá um erro Rebase / Merge em andamento, então, nesse caso, você não será capaz de deletar seu branch. Portanto, ou você precisa resolver o rebasing / mesclagem. Caso contrário, você pode forçar a exclusão usando, git branch -D my_branch Para excluir remotamente: git push --delete origin my_branch Você pode fazer o mesmo usando: git push origin: my_branch # Fácil de lembrar, ambos farão o mesmo. Representação gráfica: | Isso não funcionará se você tiver uma tag com o mesmo nome do branch no remoto: $ git push origin: branch-or-tag-name erro: dst refspec branch-or-tag-name corresponde a mais de um. erro: falha ao enviar alguns refs para 'git@github.com: SomeName / some-repo.git' Nesse caso, você precisa especificar que deseja excluir o branch, não a tag: git push origin: refs / heads / branch-or-tag-name Da mesma forma, para excluir a tag em vez do branch que você usaria: git push origin: refs / tags / branch-or-tag-name | Muitas das outras respostas levarão a erros / avisos. Esta abordagem é relativamente à prova de idiotas, embora você ainda possa precisar de git branch -D branch_to_delete se não estiver totalmente integrado em some_other_branch, por exemplo. git checkout some_other_branch git push origin: branch_to_delete git branch -d branch_to_delete A poda remota não é necessária se você excluiu o branch remoto. Ele é usado apenas para obter os controles remotos mais atualizados disponíveis em um repositório que você está rastreando. Observei que o git fetch adiciona remotos, não os remove. Aqui está um exemplo de quando git remote prune origin realmente fará algo: Usuário Aexecuta as etapas acima. O usuário B executaria os seguintes comandos para ver os branches remotos mais atualizados: git fetch git remote prune origin git branch -r | Fiquei cansado de procurar essa resposta no Google, então usei uma abordagem semelhante para a resposta que crizCraig postou anteriormente. Eu adicionei o seguinte ao meu perfil Bash: function gitdelete () { git push origin - excluir $ 1 git branch -D $ 1 } Então, toda vez que termino um branch (mesclado com o master, por exemplo), executo o seguinte em meu terminal: gitdelete my-branch-name ... que então exclui meu nome do ramo da origem e também localmente. | Antes de executar branch git --delete certifique-se de determinar primeiro qual é o nome exato do branch remoto executando: git ls-remote Isso lhe dirá o que inserir exatamente para o valor . (o branch diferencia maiúsculas de minúsculas!) | Usar: git push origin: bugfix # Exclui branch remoto git branch -d bugfix # Deve excluir o branch local manualmente Se você tem certeza de que deseja excluí-lo, execute git branch -D bugfix Agora, para limpar ramos remotos excluídos, execute git remote prune origin | 1 2 Próximo Questão altamente ativa. Ganhe 10 reputação para responder a esta pergunta. O requisito de reputação ajuda a proteger essa pergunta contra spam e atividades sem resposta. Não é a resposta que você está procurando? Navegue por outras questões com a tag git version-control git-branch git-push git-remote ou faça sua própria pergunta.